{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第二步：调整树的参数：max_depth & min_child_weight# 第二步：调整树的参数：max_depth & min_child_weight"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from xgboost import XGBClassifier\n",
    "import xgboost as xgb\n",
    "\n",
    "import pandas as pd \n",
    "import numpy as np\n",
    "\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.model_selection import StratifiedKFold\n",
    "\n",
    "from sklearn.metrics import log_loss\n",
    "\n",
    "from matplotlib import pyplot\n",
    "import seaborn as sns\n",
    "%matplotlib inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 49352 entries, 0 to 49351\n",
      "Columns: 228 entries, bathrooms to interest_level\n",
      "dtypes: float64(9), int64(219)\n",
      "memory usage: 85.8 MB\n"
     ]
    }
   ],
   "source": [
    "dpath = './data/'\n",
    "dtrain = pd.read_csv(dpath +\"RentListingInquries_FE_train.csv\")\n",
    "dtrain.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "y_train = dtrain['interest_level']\n",
    "train = dtrain.drop([\"interest_level\"], axis=1)\n",
    "X_train = np.array(train)\n",
    "\n",
    "kfold = StratifiedKFold(n_splits=5, shuffle=True, random_state=3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一轮参数调整得到的n_estimators最优值（216），其余参数继续默认值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'max_depth': [3, 4, 5, 6], 'min_child_weight': [4]}\n"
     ]
    }
   ],
   "source": [
    "# max_depth 建议3-10， min_child_weight=1／sqrt(ratio_rare_event) =5.5\n",
    "#max_depth = [6,7,8]\n",
    "#min_child_weight = [4,5,6]\n",
    "max_depth = [3, 4, 5, 6]\n",
    "min_child_weight = [4]\n",
    "param_test2_2 = dict(max_depth=max_depth, min_child_weight=min_child_weight)\n",
    "print(param_test2_2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Anaconda3\\lib\\site-packages\\sklearn\\model_selection\\_search.py:761: DeprecationWarning: The grid_scores_ attribute was deprecated in version 0.18 in favor of the more elaborate cv_results_ attribute. The grid_scores_ attribute will not be available from 0.20\n",
      "  DeprecationWarning)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "([mean: -0.60253, std: 0.00327, params: {'max_depth': 3, 'min_child_weight': 4},\n",
       "  mean: -0.59366, std: 0.00341, params: {'max_depth': 4, 'min_child_weight': 4},\n",
       "  mean: -0.58987, std: 0.00379, params: {'max_depth': 5, 'min_child_weight': 4},\n",
       "  mean: -0.58836, std: 0.00268, params: {'max_depth': 6, 'min_child_weight': 4}],\n",
       " {'max_depth': 6, 'min_child_weight': 4},\n",
       " -0.5883604600543554)"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "xgb2_2 = XGBClassifier(\n",
    "        learning_rate =0.1,\n",
    "        n_estimators=216,  #第一轮参数调整得到的n_estimators最优值\n",
    "        max_depth=5,\n",
    "        min_child_weight=1,\n",
    "        gamma=0,\n",
    "        subsample=0.3,\n",
    "        colsample_bytree=0.8,\n",
    "        colsample_bylevel = 0.7,\n",
    "        objective= 'multi:softprob',\n",
    "        seed=3,\n",
    "        nthread=-1)\n",
    "gsearch2_2 = GridSearchCV(xgb2_2, param_grid = param_test2_2, scoring='neg_log_loss',n_jobs=-1, cv=kfold, return_train_score=True)\n",
    "gsearch2_2.fit(X_train , y_train)\n",
    "\n",
    "gsearch2_2.grid_scores_, gsearch2_2.best_params_,     gsearch2_2.best_score_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'mean_fit_time': array([172.04714003, 213.51420774, 253.21586361, 242.09635758]),\n",
       " 'mean_score_time': array([0.40528655, 0.52417107, 0.67807941, 0.68228598]),\n",
       " 'mean_test_score': array([-0.60252797, -0.59365726, -0.58987216, -0.58836046]),\n",
       " 'mean_train_score': array([-0.58092378, -0.55353079, -0.52151424, -0.48386553]),\n",
       " 'param_max_depth': masked_array(data=[3, 4, 5, 6],\n",
       "              mask=[False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'param_min_child_weight': masked_array(data=[4, 4, 4, 4],\n",
       "              mask=[False, False, False, False],\n",
       "        fill_value='?',\n",
       "             dtype=object),\n",
       " 'params': [{'max_depth': 3, 'min_child_weight': 4},\n",
       "  {'max_depth': 4, 'min_child_weight': 4},\n",
       "  {'max_depth': 5, 'min_child_weight': 4},\n",
       "  {'max_depth': 6, 'min_child_weight': 4}],\n",
       " 'rank_test_score': array([4, 3, 2, 1]),\n",
       " 'split0_test_score': array([-0.59728542, -0.58815945, -0.58395884, -0.5841337 ]),\n",
       " 'split0_train_score': array([-0.58192442, -0.5553549 , -0.52315795, -0.48513628]),\n",
       " 'split1_test_score': array([-0.60081229, -0.59251061, -0.58729759, -0.58704053]),\n",
       " 'split1_train_score': array([-0.5815987 , -0.55314173, -0.52195646, -0.48294545]),\n",
       " 'split2_test_score': array([-0.60283832, -0.59307189, -0.59092821, -0.5890714 ]),\n",
       " 'split2_train_score': array([-0.58072019, -0.55347035, -0.5209648 , -0.48295467]),\n",
       " 'split3_test_score': array([-0.60648507, -0.597414  , -0.59273515, -0.58932773]),\n",
       " 'split3_train_score': array([-0.58076906, -0.55298667, -0.52144637, -0.48451636]),\n",
       " 'split4_test_score': array([-0.60521954, -0.5971314 , -0.5944424 , -0.59223011]),\n",
       " 'split4_train_score': array([-0.57960651, -0.55270028, -0.52004562, -0.48377489]),\n",
       " 'std_fit_time': array([ 1.22094087,  6.20542673,  1.9570473 , 26.06700323]),\n",
       " 'std_score_time': array([0.00886049, 0.00937469, 0.07271639, 0.09359908]),\n",
       " 'std_test_score': array([0.0032689 , 0.00340781, 0.00378927, 0.00268405]),\n",
       " 'std_train_score': array([0.00080714, 0.00094533, 0.00103544, 0.00086288])}"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gsearch2_2.cv_results_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best: -0.588360 using {'max_depth': 6, 'min_child_weight': 4}\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x1fe4d6f8c88>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# summarize results\n",
    "print(\"Best: %f using %s\" % (gsearch2_2.best_score_, gsearch2_2.best_params_))\n",
    "test_means = gsearch2_2.cv_results_[ 'mean_test_score' ]\n",
    "test_stds = gsearch2_2.cv_results_[ 'std_test_score' ]\n",
    "train_means = gsearch2_2.cv_results_[ 'mean_train_score' ]\n",
    "train_stds = gsearch2_2.cv_results_[ 'std_train_score' ]\n",
    "\n",
    "pd.DataFrame(gsearch2_2.cv_results_).to_csv('my_preds_maxdepth_min_child_weights.csv')\n",
    "\n",
    "# plot results\n",
    "test_scores = np.array(test_means).reshape(len(min_child_weight), len(max_depth))\n",
    "train_scores = np.array(train_means).reshape(len(min_child_weight), len(max_depth))\n",
    "\n",
    "for i, value in enumerate(min_child_weight):\n",
    "    pyplot.plot(max_depth, test_scores[i], label= 'test_min_child_weight:'   + str(value))\n",
    "#for i, value in enumerate(min_child_weight):\n",
    "#    pyplot.plot(max_depth, train_scores[i], label= 'train_min_child_weight:'   + str(value))\n",
    "    \n",
    "pyplot.legend()\n",
    "pyplot.xlabel( 'max_depth' )                                                                                                      \n",
    "pyplot.ylabel( '- Log Loss' )\n",
    "pyplot.savefig( 'max_depth_vs_min_child_weght.png' )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "结果跟预制的相同，所以不需要对若分类器数调整"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
